﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using WaterRegimenMonitor.Common;

namespace WaterRegimenMonitor.Common
{
    /// <summary>
    /// Josn分页查询模型
    /// </summary>
    /// <remarks></remarks>
    public class JosnPagingQueryModel
    {
        #region ---Property

        /// <summary>
        /// 获得或者设置当前查询的页号。
        /// </summary>
        /// <value>当前查询的页号。</value>
        /// <remarks></remarks>
        public int page
        {
            get;
            set;
        }

        /// <summary>
        /// 获得或者设置当前查询的起始记录序号。
        /// </summary>
        /// <value>当前查询的起始记录序号。</value>
        /// <remarks></remarks>
        public int start
        {
            get;
            set;
        }

        /// <summary>
        /// 获得或者设置当前查询的每页记录数。
        /// </summary>
        /// <value>当前查询的每页记录数。</value>
        /// <remarks></remarks>
        public int limit
        {
            get;
            set;
        }

        /// <summary>
        /// 获得或者设置当前查询的排序条件。
        /// </summary>
        /// <value>当前查询的排序条件。</value>
        /// <remarks></remarks>
        public string sort
        {
            get;
            set;
        }

        /// <summary>
        /// 获得当前查询的排序条件模型。
        /// </summary>
        /// <remarks></remarks>
        public JosnQuerySortModel[] SortModel
        {
            get
            {
                //判定是否初始化
                if (null == this.m_SortModel)
                {
                    //判定是否有过滤条件
                    if (string.IsNullOrEmpty(this.sort))
                    {
                        //如果没有，则初始化为空数组
                        this.m_SortModel = new JosnQuerySortModel[0];
                    }
                    else
                    {
                        //反序列化排序模型
                        this.m_SortModel = JsonConvert.DeserializeObject<JosnQuerySortModel[]>(this.sort);
                    }
                }

                //返回排序模型
                return this.m_SortModel;
            }
            set { this.m_SortModel = value; }
        }

        /// <summary>
        /// 获得或者设置当前查询的过滤条件。
        /// </summary>
        /// <value>当前查询的过滤条件。</value>
        /// <remarks></remarks>
        public string filter
        {
            get;
            set;
        }

        /// <summary>
        /// 获得当前查询的过滤条件模型。
        /// </summary>
        /// <remarks></remarks>
        public JosnQueryFilterModel[] FilterModel
        {
            get
            {
                //判定是否初始化
                if (null == this.m_FilterModel)
                {
                    //判定是否有过滤条件
                    if (string.IsNullOrEmpty(this.filter))
                    {
                        //如果没有，则初始化为空数组
                        this.m_FilterModel = new JosnQueryFilterModel[0];
                    }
                    else
                    {
                        //反序列化排序模型
                        this.m_FilterModel = JsonConvert.DeserializeObject<JosnQueryFilterModel[]>(this.filter);
                    }
                }

                //返回排序模型
                return this.m_FilterModel;
            }
            set
            {
                this.m_FilterModel = value;
            }
        }

        #endregion

        #region ---Field

        /// <summary>
        /// 排序条件模型
        /// </summary>
        private JosnQuerySortModel[] m_SortModel;

        /// <summary>
        /// 过滤条件模型
        /// </summary>
        private JosnQueryFilterModel[] m_FilterModel;

        #endregion
    }
}
